CodeBuild のエラー「toomanyrequests: You have reached your pull rate limit.」を回避するには

CodeBuild のエラー「toomanyrequests: You have reached your pull rate limit.」を回避するには

Clock Icon2025.01.15

困っていた内容

CodeBuild で Docker イメージをビルドしていますが、まれに次のエラーでビルドが失敗します。

Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit

再試行で成功することもあれば、繰り返し発生することもあります。上限緩和申請が必要でしょうか。
ビルドの失敗を防ぐ方法を教えてください。

どう対応すればいいの?

次のいずれかの方法を検討してください。

  • Docker Hub の認証情報を設定する
  • ビルドプロジェクトを VPC に接続する
  • ECR Public Gallery から取得する

CodeBuild で Docker Hub からイメージ取得を行うと、Docker Hub 側のレート制限でイメージ取得に失敗する場合があります。

2025年1月時点で、Docker Hub の認証情報を設定しない Pull は、IP アドレス毎にレート制限が設定されています。
VPC に接続していない CodeBuild のビルドは、AWS 利用者間で共有される IP アドレスを使用して Docker Hub に接続します。そのため、他の利用者を含む CodeBuild の利用状況によっては、Docker Hub 側のレート制限でエラーが発生します。

回避策としては次の方法があります。なお、AWS 側の上限緩和では対応できませんのでご注意ください。

Docker Hub の認証情報を設定する

Docker Hub の認証情報を設定すると、認証情報毎にレート制限が適用され、また閾値も大幅に緩和されます。
具体的な設定方法は次のドキュメントや弊社ブログを参照してください。

なお、Docker Hub の認証情報(アカウント)が必要となります。

ビルドプロジェクトを VPC に接続する

ビルドプロジェクトを VPC に接続し、VPC 内の NAT ゲートウェイ等経由で Docker Hub にアクセスすることで、使用する IP アドレスを制御できます。
レート制限は IP アドレス毎となるため、他の利用者の影響を受けず、利用状況のコントロールが可能です。
具体的な設定方法は次のドキュメントを参照してください。

Docker Hub で公開されているイメージは ECR Public でも公開されている場合があります。
イメージの Pull 先を Docker Hub から ECR Public に変更することで、Docker Hub 側のレート制限を回避することが可能です。

例えばDockerfileの場合は、次のような修正となります。

# 修正前
FROM alpine:latest

# 修正後
FROM public.ecr.aws/docker/library/alpine:latest

参考資料

Possible cause: If the error message contains "toomanyrequests", and the image is obtained from Docker Hub, this error means the Docker Hub pull limit has been reached.
Recommended solution: Use a Docker Hub private registry, or obtain your image from Amazon ECR. For more information about using a private registry, see Private registry with AWS Secrets Manager sample for CodeBuild. For more information about using Amazon ECR, see Amazon ECR sample for CodeBuild .

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.